#pragma once

#include <cstdint>


template<typename EnumType,typename StorageDataType=uint8_t>
class TFlags
{
public:

    void Set(EnumType InEnum,bool InValue)
    {
        if(InValue)
        {
            Data |=  1<< (uint32_t)InEnum;
        }else
        {
            Data &= ~(1<< (uint32_t)InEnum);
        }
    }

    bool Get(EnumType InEnum)
    {
         return Data & (1<< (uint32_t)InEnum);
    }

private:
    StorageDataType Data=0;
};